package org.ch02.hw.demo02;

import org.ch02.entity.Student;

import java.lang.reflect.Constructor;

/**
 *
 * 通过反射获取类的构造方法，如下所示：
 * public Student(String name,int age,Double weight)
 *
 * 使用反射实例化此类的对象，调用 show 方法，
 * show 方法把构造方法的四个信息打印输出。
 *
 * @author lwj
 * @date 2025-03-17
 * @vesion 1.0.0
 */
public class MainTest01 {
    public static void main(String[] args) {
        try {
            // 获取 Class 对象
            Class<?> clazz = Student.class;
            // 获取构造器对象
            Constructor<?> constructor = clazz.getConstructor(String.class, int.class, Double.class);
            // 实例化对象
            Object object = constructor.newInstance("张三", 18, 90d);
            // 判断是否是 Student 对象
            if(object instanceof Student student){
                // 调用方法
                student.show();
            }
        } catch (Exception e) {
            throw new RuntimeException(e);
        }
    }
}
